perm filename A40[106,RWF] blob
sn#783157 filedate 1985-01-11 generic text, type C, neo UTF8
COMMENT ā VALID 00005 PAGES
C REC PAGE DESCRIPTION
C00001 00001
C00002 00002 Preface: to the Student
C00006 00003 Nested Conditionals. 17-20
C00009 00004 User-Defined Subalgorithms. (61-66) (Complete)
C00012 00005 Number Bases. (169-171)
C00015 ENDMK
Cā;
Preface: to the Student
Goals (and non-goals) of the text/course.
Reference to Cooper, ``Structured Programming'' as companion text for reference
on technical issues.
Local dialects. How the book treats non-standard features.
Preface: to the Teacher
What the teacher should know; computer programming as a discipline
What kind of problem sets to use
What kind of computer support to provide. The paradigmatic approach.
E.g., it is better to have ten small problems, each exercizing a single
Pascal feature, than five large ones, each incorporating several new features.
Availability of instructor's guide with more problems and solutions, tapes
with all example programs for experimentation, data sets such as a lexicon
and a large sample of English text.
Algorithms. (1-9) (Complete)
History. Natural language algorithms
Algorithm movies. Invariants and variants (informal). Programming and Languages.
Pascal and the ISO Standard.
Rules of good programming practice.
Constants and Constant Definitions
Expressions
Simple Programs. (10-11)
The form of a program. Headings. Blocks.
Variable declarations. Expressions.
Print commands (default cases).
How to prepare and execute a program.
External names of OUTPUT.
Default output format and scientific notation.
Parentheses and precedence. WRITE, WRITELN, PAGE.
Examples using the computer as a calculator.
Comments. (12)
Program self-identification and self-documentation standards.
Simple Iteration
Iteration variables and declarations. INTEGER. Counting, repetition.
Expressions with variables.
Arithmetic progressions.
Examples: printing tables.
Nested Iteration. (13-16)
Compound statements.
The contour model of execution.
Hierarchical design.
Examples: Two-dimensional tables, geometrical designs like diamonds,
stairways, flags.
Simple Conditionals
Relations.
Disjoint alternatives.
The null alternative.
Periodic behavior: DIV and MOD.
Logical Connectives
AND, OR, NOT
Nested Conditionals. 17-20
Systematic partitioning.
Hierarchical design.
Relation to logical connectives.
The ``dangling ELSE.''
Symmetry
How to simplify construction of a program by building in the symmetries
of the problem.
Example: printing an enlarged block letter B.
Standard Functions and Operators. (21-24) (Complete.)
Definitions, ranges, precision, pitfalls.
Storage Variables, Assignment, Input. (25-34)
Temporaries. Examples of integer powers, GCD, Fibonacci numbers. Invariants.
Symbolic execution.
READ. Preparation of input files.
External names of INPUT.
Human execution of computer algorithms.
Output Format. (35)
Integers.
Reals.
String constants.
Length and precision qualifiers.
Number types. (36-39)
Fixed- and floating-point representation.
Drivers. (40-43)
Separate design of control and computation.
Informal use of parameters and subalgorithms (preparing for procedures).
Indefinite Iteration (WHILE). (44-48)
Termination by well-ordering of the natural numbers, by Archimedean principle,
by finiteness of representable numbers.
Symbolic Execution. (49-54)
Distinction between math. variable as a single unspecified number,
and a storage variable as place where a series of numbers are kept.
Snapshots.
Characters. (55-57) (Complete.)
Ordinal types. ASCII and other codes. Tables of codes (in appendix). Set types.
(Implementation deficiencies, e.g. in Hedrick compiler).
Programmed Input/Output. (73-75)
The Syntax of Programs (move earlier?)
``Railroad track'' charts.
(Appendix contains complete charts).
Type Definitions
Desirability of naming types, for syntactic flexibility in Pascal.
User-Defined Subalgorithms. (61-66) (Complete)
Functions and Procedures.
Blocks and scope.
The contour model.
Arguments and parameters.
Local and global variables.
Pitfalls: aliasing.
Arrays. (68-75)
Subrange types.
The contour data model.
Arrays as Parameters.
Coordinates (Graph and Array). (77-78)
Table Searching (Case Study). (79-81) (Complete)
Debugging, invariants.
Programming Cliches. (82)
(Standard pieces of program (``macros'') as subalgorithms).
Programming Methodology. (83-87)
Rules of good programming practice.
Debugging. (88-89)
Use of drivers and stub procedures.
Bisection. Use of symptoms.
My Compiler Doesn't Understand Me (and Vice Versa). (90-95)
Interpreting error messages.
Etiquette of Computer Usage. (96)
Horror Stories and Time Bombs. (97-104)
A section to persuade the reader of the importance of discipline, perfectionism,
the rules of good programming practice, and the use of invariants.
Strings. (105-112)
Files. (113-124) Complete.
Pseudo-files, Interactive files, Terminals. 125-127
Complete
The Paradigms of Programming
An introduction to the sections on problem size reduction, recurrence,
recursion, dynamic programming, etc.
Problem Size Reduction. (128-130)
Iterative Refinement. (131-138)
(Is this the same as problem size reduction?)
Recurrence. (139-143)
Recursion. (144-154) (complete)
Number Representation. (155)
Appendix D6-11
Numerical Precision. (156-168)
Number Bases. (169-171)
(Incorporate into ``A Slice of Pi''?)
Algorithms for very high precision arithmetic, using large number bases.
A Slice of Pi. (172-184) (complete)
History and theory of computation of pi.
Case study in algorithm design and testing.
Programming Economics. (185-189)
Time/space/labor/reliability tradeoffs
Dynamic Programming. (190-207)
(Complete, needs reorganization and trimming)
Computational Geometry. (208-212)
The graphics of line drawings, interior-shading, etc.
Representation of Information. (213-217)
(Combine with Data Structures?)
Data Structures. (218-221)
Records and References. (222-225)
Random Numbers and Monte Carlo Methods, (226-228)
Discrete Simulation. (229-230)
Final Projects. (231-248)
Appendix: Syntax Charts
Appdenix: Standard Functions
Appendix: Character Codes
ASCII, IBCDIC, CDC.
Appendix: Time Sharing and Batch Processing
Appendix: UCSD Pascal
Summary of differences from standard Pascal.
Similar appendices for other major dialects.